
//================v1要点总结===============
/**
 * 1. 思想：从上右下左四个方向进行**深度遍历**查找染色。
 * 2. 注意：使用行列号就用行列号来表示，别用x,y,容易误解
 */

/**
 * @param {number[][]} image
 * @param {number} sr
 * @param {number} sc
 * @param {number} newColor
 * @return {number[][]}
 */
var floodFill = function (image, sr, sc, newColor) {
    // 如果一开始就是相同的直接返回
    let oldColor = image[sr][sc]
    if (oldColor === newColor) {
        return image
    }

    // 定义遍历方向: 上、右、下、左
    let dir = [[0, -1], [1, 0], [0, 1], [-1, 0]]
    let w = image[0].length
    let h = image.length
    function fillColor(img, ri, ci) {
        // 函数目的：颜色填充
        img[ri][ci] = newColor

        // 下面代码用于判断是否往指定方向查找赋值
        for (let i = 0; i < dir.length; i++) {
            let nr = ri + dir[i][0]
            let nc = ci + dir[i][1]
            // 判断pos是否超出图像范围
            if (nc >= 0 && nc < w && nr >= 0 && nr < h) {
                // 四个方向，与旧颜色相同才进行替换
                if (img[nr][nc] === oldColor) {
                    fillColor(img, nr, nc)
                }
            }
        }
        return img
    }
    return fillColor(image, sr, sc)
};

console.log(floodFill([[0, 0, 0], [1, 0, 0]], 1, 0, 2))
